#ifndef SENDER_H
#define SENDER_H

#include "Object.h"

/**
 * @class Sender
 * @brief Sender类负责定义信号；并负责在需要时，发射信号。
 * 通常情况下，一个文件应当只包含一个类，应当由一个名为sender.cpp/sender.h的文件来放置Sender类。
 * 请看main函数中的测试代码，测试代码解释了为什么Sender和Receiver需要继承于GObject。
 */
class Sender: public GObject
{
public:
  /**
   * 定义一个名称为selected的信号；该信号接收两个参数，参数类型分别为const string&和int
   */
  GSignal<void(const string &, int)> selected;

public:
  /**
   * @brief 发射信号
   *
   * @return void
   */
  void notify()
  {
    string a("giveda.com");
    selected(a, 3);

    a = "Hello, Giveda!";
    selected.emit(a, 6);
  }
};

#endif //SENDER_H
